import pymysql

class DBTools:

    def __init__(self):
        # 创建一个连接数据库的对象
        self.conn = pymysql.connect(
            host='localhost',  # 连接的数据库服务器主机名
            port=3306,  # 数据库端口号
            user='root',  # 数据库登录用户名
            passwd='rootpass',
            db='stock',  # 数据库名称
            charset='utf8',  # 连接编码
            cursorclass=pymysql.cursors.DictCursor
        )
        # 使用cursor()方法创建一个游标对象，用于操作数据库
        self.cur = self.conn.cursor()

    # 查询一条数据
    def search_one(self,sql):
        self.cur.execute(sql)
        result = self.cur.fetchone()  # 使用 fetchone()方法获取单条数据.只显示一行结果
        # result = self.cur.fetchall()  # 显示所有结果
        return result

    def search(self,sql):
        self.cur.execute(sql)
        # result = self.cur.fetchone()  # 使用 fetchone()方法获取单条数据.只显示一行结果
        result = self.cur.fetchall()  # 显示所有结果
        return result

    # 更新SQL
    def updata(self, sql):
        try:
            self.cur.execute(sql)  # 执行sql
            self.conn.commit()  # 增删改操作完数据库后，需要执行提交操作
        except:
            # 发生错误时回滚
            self.conn.rollback()
        self.conn.close()  # 记得关闭数据库连接

    # 插入SQL
    def insert(self, sql ,value):
        try:
            self.cur.execute(sql, value)  # 执行sql
            self.conn.commit()  # 增删改操作完数据库后，需要执行提交操作
            return True
        except:
            # 发生错误时回滚
            self.conn.rollback()
            return False
        self.conn.close()

    # 删除sql
    def delete(self, sql):
        try:
            self.cur.execute(sql)  # 执行sql
            self.conn.commit()  # 增删改操作完数据库后，需要执行提交操作
        except:
            # 发生错误时回滚
            self.conn.rollback()
        self.conn.close()

    def get_stock_by_date(self, date):
        sql = "SELECT * FROM ah_yijia WHERE trade_date='" + date + "'"
        return DBTools().search(sql)

    def get_min_ah_stock(self, spare_stock_num, date):
        sql = "SELECT * FROM ah_yijia WHERE trade_date='" + date + "' ORDER BY a_h;"
        res = self.search(sql)
        result = []
        i = 0
        while i < spare_stock_num and i < len(res):
            result.append(res[i])
            i = i + 1
        return result

    def get_min_polocy_stock(self, spare_stock_num, date):
        sql = "SELECT * FROM celue_hightop_high_high WHERE trade_date='" + date + "' ORDER BY polocy1_10;"
        res = self.search(sql)
        result = []
        i = 0
        while i < spare_stock_num and i < len(res):
            result.append(res[i])
            i = i + 1
        return result


if __name__ == '__main__':
    db_obj = DBTools()
    # res = db_obj.search_one('select * from ah_yijia')
    res = db_obj.get_min_stock(5, '2000-01-04')
    for r in res:
        print(r)
